home *** CD-ROM | disk | FTP | other *** search
/ Birds of My State or Province 4.5 / eField Guide Viewer.iso / pc / Windows / CR115.cab / prompts.js.0B3AD0A8_5253_4073_9718_01793E7A9773 < prev    next >
Encoding:
Text File  |  2004-08-19  |  12.2 KB  |  360 lines

  1. //////////////////////////////
  2. // FOR DEBUGGING ONLY
  3. var debug = false;
  4. function dumpFormFields(formName)
  5. {
  6.     theForm = document.forms[formName];
  7.     for ( idx = 0; idx < theForm.elements.length; ++idx )
  8.         alert ( theForm.elements[idx].name + " - " + theForm.elements[idx].value );
  9. }
  10.  
  11. //////////////////////////////
  12. // GLOBAL VAR
  13. var needURLEncode = false;    // only need to do url encode in java
  14. var promptPrefix = "promptex-";
  15.  
  16. ///////////////////////////////
  17. // properly encode prompt values
  18. function encodePrompt (prompt)
  19. {
  20.     if (needURLEncode)
  21.     {
  22.         return encodeURIComponent(prompt);
  23.     }
  24.     else
  25.     {
  26.         return prompt;
  27.     }
  28. }
  29.  
  30. ////////////////////////////////
  31. // add number, currency, string from dropdown/textbox to list box
  32. // where multiple prompt values are supported
  33. function addPromptDiscreteValue ( inForm, type , paramName)
  34. {
  35.     var widget, obj;
  36.     widget = obj = inForm[paramName + "DiscreteValue"];
  37.     if ( obj.type && obj.type.toLowerCase() != "text" &&
  38.          obj.type.toLowerCase() != "hidden" && obj.type.toLowerCase() != "password")
  39.     {
  40.         //select box not a textbox
  41.         obj = obj.options[obj.selectedIndex];
  42.     }
  43.     if ( ! checkSingleValue ( obj.value, type ) )
  44.     {
  45.         if (widget.focus && widget.type.toLowerCase() != "hidden")
  46.             widget.focus();
  47.         return false;
  48.     }
  49.     promptValue =  encodePrompt(obj.value);
  50.     displayString = ( obj.text ) ? obj.text : obj.value;
  51.     promptEntry = new Option(displayString,promptValue,false,false);
  52.     theList = inForm[paramName + "ListBox"];
  53.     theList.options[theList.length] = promptEntry;
  54.     if (widget.focus && widget.type.toLowerCase() != "hidden")
  55.         widget.focus ();
  56.     if ( widget.select )
  57.         widget.select ();
  58.     if ( widget.type.toLowerCase != "text" &&
  59.      widget.type.toLowerCase != "hidden" &&
  60.      widget.type.toLowerCase != "password")
  61.         if ( widget.selectedIndex < widget.length - 1 )
  62.             widget.selectedIndex = widget.selectedIndex + 1;      //... or move to next selection in listbox
  63. }
  64.  
  65. ////////////////////////////////////
  66. // adds Range prompt to listbox where multiple values are supported
  67. function addPromptRangeValue ( inForm, type , paramName )
  68. {
  69.     lowerBound = inForm[paramName + "LowerBound"];
  70.     upperBound = inForm[paramName + "UpperBound"];
  71.     //handle select box, not text box case
  72.     if ( lowerBound.type.toLowerCase () != "text" &&
  73.      lowerBound.type.toLowerCase () != "hidden" &&
  74.      lowerBound.type.toLowerCase () != "password" )  //either upper or lower, doesn't matter
  75.     {
  76.         lowerBound = lowerBound.options[lowerBound.selectedIndex];
  77.         upperBound = upperBound.options[upperBound.selectedIndex];
  78.     }
  79.  
  80.     lowerUnBounded = inForm[paramName + "NoLowerBoundCheck"].checked;
  81.     upperUnBounded = inForm[paramName + "NoUpperBoundCheck"].checked;
  82.     lvalue = uvalue = "";
  83.  
  84.     if ( ! lowerUnBounded )
  85.     {
  86.         if ( ! checkSingleValue ( lowerBound.value, type ) ) {
  87.             if ( lowerBound.focus && lowerBound.type.toLowerCase () != "hidden")
  88.                 lowerBound.focus ();
  89.             return false;
  90.         }
  91.         lvalue = lowerBound.value;
  92.     }
  93.     if ( ! upperUnBounded )
  94.     {
  95.         if ( ! checkSingleValue ( upperBound.value, type ) ) {
  96.             if ( upperBound.focus && upperBound.type.toLowerCase () != "hidden")
  97.                 upperBound.focus ();
  98.             return false;
  99.         }
  100.         uvalue = upperBound.value;
  101.     }
  102.     ldisplay = (lowerBound.text && !lowerUnBounded) ? lowerBound.text : lvalue;
  103.     udisplay = (upperBound.text && !upperUnBounded) ? upperBound.text : uvalue;
  104.  
  105.     lowerChecked = inForm[paramName + "LowerCheck"].checked;
  106.     upperChecked = inForm[paramName + "UpperCheck"].checked;
  107.  
  108.     value = ( lowerChecked && ! lowerUnBounded ) ? "[" : "(";
  109.     if ( ! lowerUnBounded ) //unbounded is empty string not quoted empty string (e.g not "_crEMPTY_")
  110.         value += encodePrompt(lvalue);
  111.     value += "_crRANGE_"
  112.     if ( ! upperUnBounded )
  113.         value += encodePrompt(uvalue);
  114.     value += (upperChecked && ! upperUnBounded ) ? "]" : ")";
  115.     if ( debug ) alert (value);
  116.  
  117.     display = ( lowerChecked && ! lowerUnBounded ) ? "[" : "(";
  118.     display += ldisplay;
  119.     display += "  ..  "
  120.     display += udisplay;
  121.     display += (upperChecked && ! upperUnBounded ) ? "]" : ")";
  122.  
  123.     promptEntry = new Option(display,value,false,false);
  124.     theList = inForm[paramName + "ListBox"];
  125.     theList.options[theList.length] = promptEntry;
  126.  
  127. }
  128.  
  129. ////////////////////////////////////
  130. // disable check boxes based on user selection on the range parameters
  131. function disableBoundCheck(lowOrUpBound, inform, paramName) {
  132.     if (lowOrUpBound == 0) {
  133.         if (inform[paramName + "NoLowerBoundCheck"].checked) {
  134.             inform[paramName + "NoUpperBoundCheck"].disabled = true;
  135.             inform[paramName + "LowerCheck"].disabled = true;
  136.             inform[paramName + "LowerBound"].disabled = true;
  137.         }
  138.         else {
  139.             inform[paramName + "NoUpperBoundCheck"].disabled = false;
  140.             inform[paramName + "LowerCheck"].disabled = false;
  141.             inform[paramName + "LowerBound"].disabled = false;
  142.         }
  143.     } else if (lowOrUpBound == 1) {
  144.         if (inform[paramName + "NoUpperBoundCheck"].checked) {
  145.             inform[paramName + "NoLowerBoundCheck"].disabled = true;
  146.             inform[paramName + "UpperCheck"].disabled = true;
  147.             inform[paramName + "UpperBound"].disabled = true;
  148.         } else {
  149.             inform[paramName + "NoLowerBoundCheck"].disabled = false;
  150.             inform[paramName + "UpperCheck"].disabled = false;
  151.             inform[paramName + "UpperBound"].disabled = false;
  152.         }
  153.     }
  154. }
  155.  
  156. ////////////////////////////////////
  157. // puts "select" value into text box for an editable prompt which also has defaults
  158. function setSelectedValue (inForm, selectCtrl, textCtrl)
  159. {
  160.     selectedOption = inForm[selectCtrl].options[inForm[selectCtrl].selectedIndex];
  161.     inForm[textCtrl].value = selectedOption.value;
  162. }
  163.  
  164. ///////////////////////////////////
  165. // remove value from listbox where multiple value prompts are supported
  166. function removeFromListBox ( inForm, paramName )
  167. {
  168.     lbox = inForm[paramName + "ListBox"];
  169.     for ( var idx = 0; idx < lbox.options.length; )
  170.     {
  171.         if ( lbox.options[idx].selected )
  172.             lbox.options[idx] = null;
  173.         else
  174.             idx++;
  175.     }
  176. }
  177.  
  178. /////////////////////////////////////
  179. // sets prompt value into the hidden form field in proper format so that it can be submitted
  180. function setPromptSingleValue (inform, type, paramName)
  181. {
  182.     hiddenField = inform[promptPrefix + paramName];
  183.     value = "";
  184.     if ( inform[paramName + "NULL"] != null && inform[paramName + "NULL"].checked )
  185.         value = "_crNULL_"; //NULL is a literal for, uhmm.. a NULL
  186.     else
  187.     {
  188.         discreteVal = inform[paramName + "DiscreteValue"];
  189.         if ( discreteVal.type.toLowerCase () != "text" &&
  190.           discreteVal.type.toLowerCase () != "hidden" &&
  191.          discreteVal.type.toLowerCase () != "password")
  192.             value = discreteVal.options[discreteVal.selectedIndex].value;
  193.         else
  194.             value = discreteVal.value;
  195.         if ( ! checkSingleValue ( value, type ) ) {
  196.             if (discreteVal.focus && discreteVal.type.toLowerCase ())
  197.                  discreteVal.focus ();
  198.             return false;
  199.         }
  200.         else
  201.             value = encodePrompt(value);
  202.     }
  203.     hiddenField.value = value;
  204.     return true;
  205. }
  206.  
  207. /////////////////////////////////////
  208. // sets prompt value for a range into the hidden form field in proper format so that it can be submitted
  209. function setPromptRangeValue (inform, type, paramName)
  210. {
  211.     hiddenField = inform[promptPrefix + paramName];
  212.     
  213.     if ( inform[paramName + "NULL"] != null && inform[paramName + "NULL"].checked )
  214.     {
  215.         value = "_crNULL_"; //NULL is a literal for, uhmm.. a NULL
  216.         hiddenField.value = value;
  217.     return true;
  218.     }
  219.  
  220.     lowerBound = inform[paramName + "LowerBound"];
  221.     upperBound = inform[paramName + "UpperBound"];
  222.     //handle select box, not text box case
  223.     if ( lowerBound.type.toLowerCase () != "text" &&
  224.      lowerBound.type.toLowerCase () != "hidden" &&
  225.      lowerBound.type.toLowerCase () != "password")  //either upper or lower, doesn't matter
  226.     {
  227.         lowerBound = lowerBound.options[lowerBound.selectedIndex];
  228.         upperBound = upperBound.options[upperBound.selectedIndex];
  229.     }
  230.     lowerUnBounded = inform[paramName + "NoLowerBoundCheck"].checked;
  231.     upperUnBounded = inform[paramName + "NoUpperBoundCheck"].checked;
  232.     lowerChecked = inform[paramName + "LowerCheck"].checked;
  233.     upperChecked = inform[paramName + "UpperCheck"].checked;
  234.     uvalue = lvalue = "";
  235.  
  236.     if ( ! lowerUnBounded )
  237.     {
  238.         if ( ! checkSingleValue ( lowerBound.value, type ) ) {
  239.             if ( lowerBound.focus && lowerBound.type.toLowerCase () != "hidden")
  240.                 lowerBound.focus();
  241.             return false;
  242.         }
  243.         lvalue = lowerBound.value;
  244.     }
  245.     if ( ! upperUnBounded )
  246.     {
  247.         if ( ! checkSingleValue ( upperBound.value, type ) ) {
  248.             if ( upperBound.focus && upperBound.type.toLowerCase () != "hidden")
  249.                 upperBound.focus ();
  250.             return false;
  251.         }
  252.         uvalue = upperBound.value;
  253.     }
  254.     value = ( lowerChecked && ! lowerUnBounded ) ? "[" : "(";
  255.     if ( ! lowerUnBounded )
  256.         value += encodePrompt(lvalue);
  257.     value += "_crRANGE_"
  258.     if ( ! upperUnBounded )
  259.         value += encodePrompt(uvalue);
  260.     value += (upperChecked && ! upperUnBounded ) ? "]" : ")";
  261.     if ( debug )
  262.         alert (value);
  263.     hiddenField.value = value;
  264.     return true;
  265. }
  266.  
  267. /////////////////////////////////////
  268. // sets prompt value into the hidden form field in proper format so that it can be submitted
  269. function setPromptMultipleValue (inform, type, paramName)
  270. {
  271.     hiddenField = inform[promptPrefix + paramName];
  272.     values = inform[paramName + "ListBox"].options;
  273.     
  274.     if ( inform[paramName + "NULL"] != null && inform[paramName + "NULL"].checked )
  275.     {
  276.         value = "_crNULL_"; //NULL is a literal for, uhmm.. a NULL
  277.         hiddenField.value = value;
  278.         return true;
  279.     }
  280.     
  281.     if ( values.length == 0 )
  282.     {
  283.         value = "_crEMPTY_";     //if value is empty, set to empty string
  284.     }
  285.     else
  286.     {
  287.         value = "";
  288.         for ( idx = 0; idx < values.length; ++idx )
  289.         {
  290.             // first value could be empty string, then chcking value.length != 0 could miss one empty string
  291.             if ( idx != 0 )
  292.                 value += "_crMULT_"
  293.             value += values[idx].value;
  294.         }
  295.     }
  296.  
  297.     if ( debug )
  298.         alert (value);
  299.     hiddenField.value = value;
  300.     //NOTE: we'll always return true as the validation is done before values are added to select box
  301.     return true;
  302. }
  303.  
  304. ///////////////////////////////////////
  305. // check and alert user about any errors based on type of prompt
  306. var regNumber    = /^(\+|-)?((\d+(\.|,| |\u00A0)?\d*)+|(\d*(\.|,| |\u00A0)?\d+)+)$/
  307. var regCurrency  = regNumber;
  308. var regDate     = /^(D|d)(A|a)(T|t)(E|e) *\( *\d{4} *, *(0?[1-9]|1[0-2]) *, *((0?[1-9]|[1-2]\d)|3(0|1)) *\)$/
  309. var regDateTime  = /^(D|d)(A|a)(T|t)(E|e)(T|t)(I|i)(M|m)(E|e) *\( *\d{4} *, *(0?[1-9]|1[0-2]) *, *((0?[1-9]|[1-2]\d)|3(0|1)) *, *([0-1]?\d|2[0-3]) *, *[0-5]?\d *, *[0-5]?\d *\)$/
  310. var regTime     = /^(T|t)(I|i)(M|m)(E|e) *\( *([0-1]?\d|2[0-3]) *, *[0-5]?\d *, *[0-5]?\d *\)$/
  311.  
  312. function checkSingleValue ( value, type )
  313. {
  314.     if ( type == 'n' && ! regNumber.test ( value ) )
  315.     {
  316.         alert ( L_BadNumber );
  317.         return false;
  318.     }
  319.     else if ( type == 'c' && ! regCurrency.test ( value ) )
  320.     {
  321.         alert ( L_BadCurrency );
  322.         return false;
  323.     }
  324.     else if ( type == 'd' && ! regDate.test ( value ) )
  325.     {
  326.         alert ( L_BadDate );
  327.         return false;
  328.     }
  329.     else if ( type == "dt" && ! regDateTime.test ( value ) )
  330.     {
  331.         alert ( L_BadDateTime );
  332.         return false;
  333.     }
  334.     else if ( type == 't' && ! regTime.test ( value ) )
  335.     {
  336.         alert ( L_BadTime );
  337.         return false;
  338.     }
  339.  
  340.     //by default let it go...
  341.     return true;
  342. }
  343.  
  344. function checkValue(evt) {
  345.   
  346.   if (navigator.appName == "Netscape") 
  347.   {
  348.     if (evt.which == 13 && (evt.target.type == "text" || evt.target.type == "password")) 
  349.     {
  350.         checkSetAndSubmitValues ();
  351.     }
  352.   } 
  353.   else 
  354.   {
  355.     if (window.event.keyCode == 13 && (window.event.srcElement.type == "text" || window.event.srcElement.type == "password")) 
  356.     {
  357.         checkSetAndSubmitValues ();
  358.     }
  359.   }
  360. }